package web;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import enumeration.TipoContaEnum;
import enumeration.TipoRecorrenciaEnum;
import enumeration.TipoTransacaoEnum;

@Controller
@Scope("singleton")
public class AplicacaoMBean extends BaseManagedBean implements Serializable {

	private static final long serialVersionUID = 7863504781978243773L;
	private List<SelectItem> listaTipoTransacao;
	private List<SelectItem> listaTipoConta;
	private List<SelectItem> listaTipoRecorrencias;

	@Override
	protected void inicializar() {

		carregarListaTipoTransacoes();
		carregarListaTipoContas();
		carregarListaTipoRecorrencias();
	}

	private void carregarListaTipoRecorrencias() {
		listaTipoRecorrencias = new ArrayList<SelectItem>();
		for (TipoRecorrenciaEnum tipo : TipoRecorrenciaEnum.values()) {
			listaTipoRecorrencias
					.add(new SelectItem(tipo, tipo.getDescricao()));
		}
	}

	private void carregarListaTipoTransacoes() {

		listaTipoTransacao = new ArrayList<SelectItem>();
		for (TipoTransacaoEnum tipoTransacao : TipoTransacaoEnum.values()) {
			listaTipoTransacao.add(new SelectItem(tipoTransacao, tipoTransacao
					.getDescricao()));
		}
	}

	private void carregarListaTipoContas() {

		listaTipoConta = new ArrayList<SelectItem>();
		for (TipoContaEnum tipoConta : TipoContaEnum.values()) {
			listaTipoConta.add(new SelectItem(tipoConta, tipoConta
					.getDescricao()));
		}
	}

	public List<SelectItem> getListaTipoTransacao() {
		return listaTipoTransacao;
	}

	public List<SelectItem> getListaTipoConta() {
		return listaTipoConta;
	}

	public List<SelectItem> getListaTipoRecorrencias() {
		return listaTipoRecorrencias;
	}

}
